package com.xingkeduo.business.operation.domain;

import com.xingkeduo.business.operation.service.PackageUpdateService;
import com.xingkeduo.pojo.dto.hotup.HotUpDTO;
import com.xingkeduo.pojo.enums.PackageUpdateType;
import com.xingkeduo.pojo.query.PackageUpdateQuery;
import com.xingkeduo.pojo.table.PackageUpdateTable;
import com.xingkeduo.util.pojo.enums.YesNoEnum;
import com.xingkeduo.util.pojo.exception.DataException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 类说明  安装包更新domain
 *
 * @author: pantong E-mail:pantong@xingkeduo.com
 * @date: 2019年6月15日 下午2:02:44
 */
@Component
public class PackageUpdateDomain {

    @Autowired
    private PackageUpdateService packageUpdateService;


    /**
     * 根据type获取安装包更新信息   pantong  2019年6月15日下午2:49:33
     *
     * @param type
     * @return
     * @throws Throwable PackageUpdateTable
     */
    public HotUpDTO getPackageUpdateInfoByType(Integer type) throws Throwable {

        PackageUpdateQuery query = new PackageUpdateQuery();
        if (type == null || !PackageUpdateType.checkExitOrNotByValue(type)) {
            throw new DataException(DataException.Type.DEFAULT, "不支持的type值！");
        }

        query.setType(type);
        query.setIsDelete(YesNoEnum.NO);
        List<PackageUpdateTable> list = packageUpdateService.selectLists(query);
        HotUpDTO hotUpDTO = new HotUpDTO();
        if (list != null && list.size() > 0) {
            PackageUpdateTable packageUpdateTable = list.get(0);
            hotUpDTO.setCode(0L);
            hotUpDTO.setType(type);
            hotUpDTO.setId(packageUpdateTable.getId());
            hotUpDTO.setForceUpdate(packageUpdateTable.getForceUpdate());
            if (type == PackageUpdateType.IOS_TEST.getVal()) {
                hotUpDTO.setLatestVersion(Integer.valueOf(packageUpdateTable.getLatestVersion()));
            } else {
                hotUpDTO.setLatestVersion(String.valueOf(packageUpdateTable.getLatestVersion()));
            }
            hotUpDTO.setUrl(packageUpdateTable.getUrl() == null ? null : packageUpdateTable.getUrl());
            return hotUpDTO;
        } else {
            throw new DataException(DataException.Type.DEFAULT, "未获取到数据！");
        }
    }

    /**
     * 更新URL
     *
     * @param packageUpdateTable:
     * @return : java.lang.String
     * @author : gaozifeng
     * @date : 2019/6/26 14:49
     */
    public void updateUrl(PackageUpdateTable packageUpdateTable) throws Throwable {
        List<PackageUpdateTable> tableList = packageUpdateService.selectLists(new PackageUpdateQuery().setType(packageUpdateTable.getType()).setIsDelete(YesNoEnum.NO));
        if (null == tableList) {
            throw new DataException(DataException.Type.DEFAULT, "没有数据");
        }
//        if (packageUpdateTable.getLatestVersion().equals(selectTable.getLatestVersion())) {
//            throw new DataException(DataException.Type.DEFAULT, "版本号相同");
//        }
        packageUpdateTable.setId(tableList.get(0).getId());
        packageUpdateService.update(packageUpdateTable);
    }

    /**
     * 查询版本号
     *
     * @param :
     * @return : java.util.List<com.xingkeduo.pojo.table.PackageUpdateTable>
     * @author : gaozifeng
     * @date : 2019/6/26 17:51
     */
    public List<PackageUpdateTable> selectVersion() throws Throwable {
        return packageUpdateService.selectLists(new PackageUpdateQuery());
    }
}
